import service from '../utils/request'

// ==================== 消息相关 API ====================

/**
 * 获取未读消息数量
 */
export function getUnreadCount() {
  return service.get('/api/messages/unread-count')
}

/**
 * 获取消息列表
 * @param {Object} params 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页数量
 * @param {string} params.type - 消息类型：system/comment/like/follow
 * @param {boolean} params.read - 是否已读
 */
export function getMessages(params) {
  return service.get('/api/messages', { 
    params: params || {}
  })
}

/**
 * 标记消息为已读
 * @param {number} messageId 消息ID
 */
export function markMessageRead(messageId) {
  return service.put(`/api/messages/${messageId}/read`)
}

/**
 * 批量标记消息为已读
 * @param {Array} messageIds 消息ID数组
 */
export function batchMarkMessagesRead(messageIds) {
  return service.put('/api/messages/batch-read', { messageIds })
}

/**
 * 标记所有消息为已读
 */
export function markAllMessagesRead() {
  return service.put('/api/messages/read-all')
}

/**
 * 删除消息
 * @param {number} messageId 消息ID
 */
export function deleteMessage(messageId) {
  return service.delete(`/api/messages/${messageId}`)
}

/**
 * 批量删除消息
 * @param {Array} messageIds 消息ID数组
 */
export function batchDeleteMessages(messageIds) {
  return service.delete('/api/messages/batch-delete', { data: { messageIds } })
}

/**
 * 获取对话列表
 * @param {Object} params 查询参数
 */
export function getConversations(params) {
  return service.get('/api/messages/conversations', { 
    params: params || {}
  })
}

/**
 * 获取与某个用户的聊天记录
 * @param {number} userId 用户ID
 * @param {Object} params 查询参数
 */
export function getConversationDetail(userId, params) {
  return service.get(`/api/messages/user/${userId}`, { 
    params: params || {}
  })
}

/**
 * 发送私信
 * @param {Object} data 私信数据
 * @param {number} data.receiverId - 接收者ID
 * @param {string} data.content - 消息内容
 */
export function sendPrivateMessage(data) {
  return service.post('/api/messages/send', data)
}

/**
 * 创建对话（已废弃，使用sendPrivateMessage）
 * @param {Object} data 对话数据
 * @param {number} data.userId - 对方用户ID
 */
export function createConversation(data) {
  return sendPrivateMessage({ receiverId: data.userId, content: '' })
}

/**
 * 删除会话
 * @param {number} userId 用户ID
 */
export function deleteConversation(userId) {
  return service.delete(`/api/messages/conversation/${userId}`)
}

/**
 * 标记消息为已读
 * @param {number} userId 用户ID
 */
export function markConversationRead(userId) {
  return service.put(`/api/messages/mark-read/${userId}`)
}

/**
 * 获取系统通知
 * @param {Object} params 查询参数
 */
export function getSystemNotifications(params) {
  return service.get('/api/notifications/system', { 
    params: params || {}
  })
}

/**
 * 获取互动通知（点赞、评论、关注等）
 * @param {Object} params 查询参数
 */
export function getInteractionNotifications(params) {
  return service.get('/api/notifications/interactions', { 
    params: params || {}
  })
}

/**
 * 标记通知为已读（兼容旧代码）
 * @param {number} notificationId 通知ID
 */
export function markAsRead(notificationId) {
  return markMessageRead(notificationId)
}

/**
 * 获取消息设置
 */
export function getMessageSettings() {
  return service.get('/api/messages/settings')
}

/**
 * 更新消息设置
 * @param {Object} data 设置数据
 * @param {boolean} data.emailNotifications - 邮件通知
 * @param {boolean} data.pushNotifications - 推送通知
 * @param {boolean} data.commentNotifications - 评论通知
 * @param {boolean} data.likeNotifications - 点赞通知
 * @param {boolean} data.followNotifications - 关注通知
 */
export function updateMessageSettings(data) {
  return service.put('/api/messages/settings', data)
}


